The present invention relates to a client/server and in particular a system and method for connecting clients to a heavily loaded server according to connection priority.
It is common knowledge that networks, such as the Internet, local area networks (LAN), and so forth have recently spread. In such networks, a server often executes various processes requested by client terminals through the network.
The allowable throughput of such a server has a limit, depending on the throughput of a CPU, the data transfer capacity at the input-output interface, the data transfer capacity between the database for storing various data and the server, the number of concurrent threads, the capacity of cache memory used in the processing of each thread, and so forth.
When a large number of requests are made in parallel from a plurality of client terminals through a network, the capacity of the server may be exceeded. As a result, it becomes difficult for the server to respond in a timely way, and in some cases the server will not be able to process requests from client terminals normally.
For this reason, the server limits the number of client terminals that can be connected. When the connection requests from client terminals reach the limit, the server refuses to connect with any additional client terminals. Thus, the server ensures a certain level of throughput for executing processes requested by client terminals that have already been connected with the server, by refusing connection requests greater than the limit.
However, when the number of client terminals that can be connected is limited at the side of the server as described above, a user wishing to access the server may repeat a request for connection until a connection is established. For this reason, the server may receive far more connection requests than the number of client terminals actually requesting a connection. Furthermore, even when the server refuses a connection request, its processing load increases, as the refusal process is performed by use of a thread. Consequently, the server's responsiveness to connected clients may be reduced significantly by an avalanche of connection requests.
In addition, connections may be granted out of order, as connections are granted at random rather than according to waiting time.